package woogieunit.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;


/**
 * Describes a method as a Benchmark (aka a targetted benchmark). A targetted benchmark 
 * can be encapsulated in a class which is described as a BenchmarkSuite, but does not have to 
 * be.
 * @author Woogie
 * @version 1
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface Benchmark {
	/**
	 * The name of this targetted benchmark. Should be human-readable, and unique.
	 * @return the name
	 */
	String name();
	/**
	 * A group, or tag, to describe this targetted benchmark. Should be a single, human-readable 
	 * value.
	 * @return the group
	 */
	String group() default "default";
	/**
	 * The number of times this targetted benchmark should be run (per suite execution, if applicable) 
	 * Can be overriden.
	 * @return the number of times to run
	 */
	int timesToRun() default 1;
}